#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>

int main()
{

	//close(1);
	//
	
	//int fd=open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	int fd=open("log.txt",O_RDONLY);
	if(fd < 0) exit(1);

	dup2(fd,0);
	//printf("fd:  %d\n",fd);
	close(fd);
	while(1)
	{
		char buffer[64];
		if(!fgets(buffer,sizeof(buffer),stdin)) break;

		printf("%s",buffer);
	}
	//默认向显示器输出
	//printf("fd: %d\n",fd);
	//printf("hello Linux\n");
	//printf("hello Linux\n");
	//printf("hello Linux\n");
	//fprintf(stdout,"hello stdout\n");
	//fprintf(stdout,"hello stdout\n");
	//fprintf(stdout,"hello stdout\n");
	//fprintf(stdout,"hello stdout\n");

	//const char *msg="hello world\n";
	//write(fd,msg,strlen(msg));


	//printf("stdin: %d\n",stdin->_fileno);
	//printf("stdout: %d\n",stdout->_fileno);
	//printf("stderr: %d\n",stderr->_fileno);

	//printf("\n\n");

	//umask(0);
	//int fd1 = open("log1.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	//int fd2 = open("log2.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	//int fd3 = open("log3.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	//int fd4 = open("log4.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	//if(fd1 < 0) exit(1);
	//if(fd2 < 0) exit(1);
	//if(fd3 < 0) exit(1);
	//if(fd4 < 0) exit(1);
	//
	//printf("fd1: %d\n",fd1);
	//printf("fd2: %d\n",fd2);
	//printf("fd3: %d\n",fd3);
	//printf("fd4: %d\n",fd4);

	//close(fd1);
	//close(fd2);
	//close(fd3);
	//close(fd4);

	//int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	////int fd = open("log.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
	//if(fd < 0)
	//{
	//	perror("open");
	//	return 1;
	//}
	//printf("fd: %d\n",fd);

	//while(1)
	//{
	//	char buffer[16];
	//	int n = read(fd, buffer, sizeof(buffer)-1);
	//	if(n > 0)
	//	{
	//		buffer[n] = 0;
	//		printf("%s",buffer);
	//	}
	//	else if(n == 0)
	//	{
	//		break;
	//	}
	//}
	////const char *msg = "abcd\n";
	////conint cnt = 1;
	////conint a = 1234567;
	////conwhile(cnt)
	////con{
	////con	//当做字符串写 -> 实际上 const void *buf
	////con	//write(fd,msg,strlen(msg));
	////con	char buffer[16];
	////con	snprintf(buffer,sizeof(buffer),"%d",a);
	////con	write(fd,buffer,strlen(buffer));
	////con	cnt--;
	////con}

	//close(fd);
	return 0;
}
